package com.zh.yqbj.service;

import cn.hutool.core.lang.tree.Tree;
import com.zh.yqbj.dto.SpaceDTO;
import com.zh.yqbj.entity.Space;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 用户空间表 服务类
 * </p>
 *
 * @author zh
 * @since 2024-03-27 03:49:56
 */
public interface SpaceService extends IService<Space> {
    /**
     * 获取用户全部空间和笔记
     *
     * @param
     * @return
     */
    List<Tree<String>> getLoginUserSpaces();

    /**
     * 获取用户根空间
     */
    List<Space> getLoginUserRootSpaces();

    /**
     * 获取一个空间下的全部空间和笔记
     * @param spaceId
     * @return
     */
    List<Tree<String>> getSpaceTree(String spaceId);

    /**
     * 用户新建一个空间
     *
     * @param space
     */
    void saveSpaceWithUser(Space space);

    /**
     * 用户修改一个空间的信息
     *
     * @param spaceDTO
     */
    void updateSpace(SpaceDTO spaceDTO);

    /**
     * 删除空间 status -1
     *
     * @param spaceId
     */
    void deleteSpace(String spaceId);

    /**
     * 彻底删除 status -2
     *
     * @param spaceId
     */
    void removeSpace(String spaceId);

    /**
     * 回收空间 status 1 - 0
     *
     * @param spaceId
     */
    void recycleSpace(String spaceId);

    /**
     * 计算一个的空间大小并更新
     * @param spaceId
     * @return
     */
     void calcSpaceSize(String spaceId);
    /**
     * 计算本用户所有空间大小
     */
    void calcAllSpaceSize(List<String> spaceIds);
}
